三種型號:Rails的多個父關係
User
List
Item
一個User
可以有很多Lists
和List
可以有很多Items
。每個List
可以有一個Item
由任何User
添加到它。這意味着,例如,您可以創建一個列表,並且可以向其中添加項目。合理?我們繼續吧。
我希望能夠在任何時間點找到由X User
創建的所有Items
。
class User < ActiveRecord::Base
has_many :lists
has_many :items
end
class List < ActiveRecord::Base
belongs_to :user
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :list
belongs_to :user
end
我不喜歡這樣。它有一種時髦的氣味,但我不能把它放在手指上。我覺得應該有更好的東西。當創建一個新Item
我會寫一些東西,如下所示:
list = List.find(params[:list_id])
@item = list.items.new(params[:item])
user = User.first
@item.user = user
@item.save!
所以,我缺少什麼?我的關係錯了嗎(很有可能)?告訴我! :)
我喜歡這個,但我認爲OP想要保存哪個用戶添加了哪個項目。 – Kaeros 2013-02-28 01:53:52
如果解決方案與您的解決方案類似,我會在User模型中添加以下行:'has_many:items,:through =>:lists',因此他可以直接執行:user.items。 – Kaeros 2013-02-28 01:54:47
啊。我懂了。我的解決方案不會捕獲哪個用戶添加項目。讓我重溫一下。 – 2013-02-28 02:00:36