在我的rails应用中,用户可以创建设计。
Design.rb
belongs_to :user
User.rb
has_many :designs
我正在尝试创建一个新模型Look
,以便用户可以创建外观。我设想这个工作的方式是当用户转到/looks/new
时,他们有一个列表,列出了他们所喜欢的所有设计(我已经设置了该变量),表格格式正确用户可以通过的复选框,检查其中一些设计,然后单击“创建”。已检查的所有设计都将成为该Look的一部分。
由于我之前没有做过这种事情,我需要一些帮助来完成MVC的各个方面。
Look.rb
has_many :designs
Design.rb
belongs_to :looks # ??? Would the model be something different since technically when you create a design it doesn't belong to a look.
看起来控制器
def new
@designs = @user.favorites #This get's me all the designs that the particular user has favorited
@look = Look.new # ??? Again, as I haven't set this sort of relation up before, I'm unsure.
end
请告诉我任何其他可以提供帮助的代码。我甚至可能会让这个声音变得更复杂。
答案 0 :(得分:1)
此配置应该适合Justin:
class User < ActiveRecord::Base
has_many :designs
has_many :looks, through: :designs
end
class Design < ActiveRecord::Base
belongs_to :user
has_many :designs_looks
has_many :looks, through: :designs_looks
end
class Look < ActiveRecord::Base
has_many :designs_looks
has_many :designs, through: :designs_looks
end
class DesignsLook < ActiveRecord::Base
belongs_to :design
belongs_to :look
validates :design_id, presence: true
validates :look_id, presence: true
end
我不知道您将来想做什么,但您可能想考虑将user_id放在DesignsLook模型上,因此您不需要复杂的连接查询来检索用户的所有外观。您还可以与所有用户实施共享设计
答案 1 :(得分:0)
您的用户有很多设计。新外观可以有很多设计。并且设计可以属于MANY外观,用户。闻起来像has many ..., :through
http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
class User
has_many :designs, through: :design_possesion
end
class Look
has_many :designs, through: :look_designs
end
class Design
has_many :look_designs, :design_possesion
end
当然,您必须创建相应的表格。