rails - 偏好表格

时间:2011-11-10 00:31:13

标签: ruby-on-rails controller

我有父模型,子模型和连接模型。如果我需要引用parent_id和child_id,那么连接模型的控制器是什么样的?

例如,我有:

def new
  @join = JoinModel.new
new

def create
  @join = JoinModel.new(params[:join_model])
  @parent_id = current_user.id
end

我的问题是,如何引用子模型对象?

如果我使用@child = Child.find(params[:id]), it gives me the error无法找到没有身份证明的孩子。

帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

两个提示:

1)尝试使用自引用模型 - 只有一个表而不是三个表 - 这是一个更精益的设计。

2)使用“祖先”宝石模拟父母/孩子 - 它有非常方便的方法来到父母,祖先或后代。

请参阅:

http://railscasts.com/episodes/262-trees-with-ancestry(亲身实践RailsCast)

Self-referencing models in Rails 3


如果您需要将这些模型分开,可以执行以下操作:

class User < ActiveRecord::Base
  has_many :publications, :through => :ownership
end

class Publication < ActiveRecord::Base
  has_many :users , :through => :ownership
end

class Ownership < ActiveRecord::Base   # the join table
  belongs_to :user
  belongs_to :publication
end

然后创建这样的新出版物:

   u = User.find_by_name("John")
   u.publications.new( attributes-for-new-publication )
   u.save

这不是父/子关系,而是“has_many through”