Ассоциация ActiveRecord для выбранной пользователем темы - PullRequest
1 голос
/ 04 декабря 2011

Я настраиваю приложение Rails 3.1, в котором пользователи могут изменить «тему» ​​своей страницы на одну из нескольких готовых тем. У меня возникают проблемы с выяснением, какая ассоциация ActiveRecord правильно моделирует отношения между пользователем и темой.

Я хочу написать что-то вроде:

class User < ActiveRecord::Base
  has_one :theme

class Theme < ActiveRecord::Base
  belongs_to_many :users

Но "belonds_to_many" не является реальной ассоциацией, и has_one помещает внешний ключ в таблицу Theme. (согласно Основы ассоциации )

Каков канонический способ для «пользователя» ActiveRecord иметь одну «тему», где «тема» может использоваться многими «пользователями»?

1 Ответ

0 голосов
/ 04 декабря 2011

В этом случае пользователь должен принадлежать теме.

class User < ActiveRecord::Base
  belongs_to :theme
end

class Theme < ActiveRecord::Base
  has_many :users
end

В этом случае в пользовательской таблице будет поле с именем theme_id.

В этом случае если вы думаете об этом с точки зрения англоязычного языка, в этом случае если вы думаете об этом, то это кажется странным, поскольку пользователь на самом деле не должен принадлежать к теме. Однако общее правило состоит в том, что модель, содержащая внешний ключ, принадлежит модели, которая этого не делает.

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