2017-06-26 91 views
0
class User < ApplicationRecord 
    has_many :created_events, :foreign_key => "creator_id", :class_name => "Event" 
end 

class Event < ApplicationRecord 
    belongs_to :creator, :class_name => "User" 
end 

當我試圖用一個創造者創建一個事件,它說ActiveModel::UnknownAttributeError: unknown attribute 'creator_id' for Event. 我跑rails db:migrate但仍不能創建外鍵,並添加到事件表。我究竟做錯了什麼?我到處看着。::加載ActiveModel UnknownAttributeError:未知屬性「creator_id」對事件

$軌分貝:遷移:狀態

Status Migration ID Migration Name 
-------------------------------------------------- 
    up  20170625163737 Create users 
    up  20170625170905 Create events 
    up  20170625171959 Add description to event 
    up  20170625174531 Add creator id to events 

但是,遷移文件表明,沒有另外寫了:

class AddCreatorIdToEvents < ActiveRecord::Migration[5.1] 
    def change 
    end 
end 
+0

什麼'軌分貝:遷移:status'回報? –

+0

您是否可以使用遷移文件更新問題以創建事件表。你可以在'your_app/db/migrate'下找到它。 –

+0

@SebastiánPalma補充說。 – sarpbasaraner

回答

1

您沒有正確定義的關聯。您的模型應如下:

class User < ApplicationRecord 
    has_many :events, :foreign_key => "creator_id", :class_name => "Event" 
end 

class Event < ApplicationRecord 
    belongs_to :creator, :foreign_key => "creator_id", :class_name => "User" 
end 

而且foreign_key總是出現在子表。嘗試像下面創建活動。

考慮用戶已經登錄。

current_user.events.create(event_params) 

請參考this相關協會的幫助。

+0

'>> u.events.create(描述: 「試圖創建」) NoMethodError:爲#未定義的方法 '事件'<用戶:0x000000051313c0> \t從(IRB):2' _Also foreign_key總是存在於子表。嘗試創建類似以下的活動._ 你確定這是正確的嗎? – sarpbasaraner

+0

我在答案中更新了關聯。現在它會工作。我已將has_many:created_events更改爲has_many:用戶模型中的事件。 –

+0

它現在說事件的ActiveModel :: UnknownAttributeError:未知屬性'user_id'。 \t from(irb):2' – sarpbasaraner

0

你的模型應該是這樣的:

class User < ApplicationRecord 
    has_many :created_events, :foreign_key => "creator_id", :class_name => "Event" 
end 

class Event < ApplicationRecord 
    belongs_to :creator, :foreign_key => "creator_id", :class_name => "User" 
end 
相關問題