Rails ActiveRecord - has_many через и принадлежит к связанной модели - PullRequest
0 голосов
/ 23 марта 2010

у меня 3 модели

сайтов, user_favor и пользователей. Соответствующие отношения:

class Site < ActiveRecord::Base
  has_many :users, :through => :user_favorites

class UserFavorite < ActiveRecord::Base
  belongs_to :user, :counter_cache => true
  belongs_to :site
end

class User < ActiveRecord:Base
  has_many :user_favorites
  has_many :sites, :through => :user_favorites

Все это прекрасно работает. Я хотел бы добавить новый атрибут в модель сайта, чтобы указать, какой пользователь его создал.

Я не верю, что это составляет сценарий has_and_belongs_to_many. На сайте есть много пользователей через user_favoris, но я хочу, чтобы он принадлежал одному пользователю, отражая владельца / создателя.

Мне интересно, каков лучший метод ORM для этого. В случае с SQL я бы просто использовал разные объединения, в зависимости от того, что я пытался сделать запрос с помощью FK созданного на сайте. Извините, если я что-то упустил здесь.

Спасибо

1 Ответ

0 голосов
/ 23 марта 2010
class Site < ActiveRecord::Base
  belongs_to :creator, :class_name => 'User'
  # ...
end

должно быть достаточно. Правильно? У вас может быть несколько взаимосвязей между одними и теми же моделями, но вы обнаружите, что для организационных целей очень полезно явно указывать их имена в таком случае.

...