рельсы принадлежат has_many, пожалуйста, объясните - PullRequest
0 голосов
/ 26 января 2010

У меня есть следующее:

User модель с колоннами:

id     user_id     password     created_at     updated_at

Store модель с колоннами:

id     store_id    store_name   create_ad      updated_at

Обычно пользователь может принадлежать нескольким магазинам. Поэтому я хотел бы получить запрос типа «получить все магазины, к которым принадлежит пользователь»

Отношения, которые я установил:

class User < ActiveRecord::Base
    belongs_to :store, :foreign_key => "store_id"
end

class Store < ActiveRecord::Base
    has_many    :user, :foreign_key => "store_id"
end

это правильно?

В конечном итоге я хочу выяснить, должны ли ID пользователя, пароль и storeid иметь возможность входа в систему.

Так, как я могу использовать find_byXXX на этом? так что если я получу строку с переданными в ID пользователя, пароле и storeId ... Я бы знал, должен ли пользователь иметь возможность войти?

Я заметил, что раньше были заданы вопросы об принадлежащих и хасмани, но я не смог понять из этих вопросов. возможно, ответы, специфичные для моей проблемы, помогут ...

Ответы [ 3 ]

0 голосов
/ 26 января 2010

Вы ищете отношения has_and_belongs_to_many. Ваши таблицы и модель должны быть следующими:

Таблица пользователей:

id password created_at updated_at

Таблица магазинов:

id store_name created_at updated_at

Присоединиться к таблице (называемой store_users):

store_id user_id

В ваших моделях:

class User < ActiveRecord::Base
   has_and_belongs_to_many :stores
end

class Store < ActiveRecord::Base
    has_and_belongs_to_many :users
end

Чтобы получить магазины пользователя:

User.stores

См. API рельсов для получения дополнительной информации.

0 голосов
/ 26 января 2010

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

0 голосов
/ 26 января 2010

Итак, вы сказали, что пользователь принадлежит ко многим магазинам. Сколько пользователей принадлежит одному магазину? Если ответ больше 1, то вам нужно has_and_belongs_to_many и третья таблица базы данных. Таблица будет содержать пары (store_id, user_id).

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

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

class User < ActiveRecord::Base
    has_many :userstores
    has_many :stores, :through => :userstores
end

class Store < ActiveRecord::Base
    has_many :userstores
    has_many :users, :through => :userstores
end

class UserStore < ActiveRecord::Base
    belongs_to :user
    belongs_to :store
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...