рельсы - форма предпочтения - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть родительская модель, дочерняя модель и модель соединения. Как выглядит контроллер модели соединения, если мне нужно сослаться на 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, не могу найти ребенка без ID`.

справка.

Спасибо.

1 Ответ

0 голосов
/ 10 ноября 2011

Два совета:

1) попробуйте использовать для этого самореференциальную модель - только одну таблицу вместо трех - это более скудный дизайн.

2) использовать драгоценный камень "предки" для моделирования родителей / детей - он имеет очень удобные методы, чтобы добраться до родителя, предков или потомков.

См:

http://railscasts.com/episodes/262-trees-with-ancestry (практический RailsCast)

Самостоятельные модели в 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"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...