2017-01-30 9 views
0

У меня есть модель, которую я не знаю, как сосредоточиться на следующий вопрос:Rails лучший способ (или лучшие практики)

Я читал следующие сообщения

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

Дом и Владелец связаны в БД с FK, поэтому у 1 компании есть N Владельцев, и у 1 Компании есть свойства N.

Модель Пользователь связан с компанией, поэтому 1 компания имеет пользователей N.

Как я могу получить доступ к company_id в модели Пользователи, чтобы сохранить этот идентификатор в свойствах и в модели владельца, когда созданы Property и Владелец?

Должен ли я сделать это в контроллере и модели?

Владелец Класс

class Owner < ApplicationRecord 

    acts_as_paranoid 

    has_many :property_owners 
    has_many :properties, :through => :property_owners 

    belongs_to :company 
    belongs_to :country 

    accepts_nested_attributes_for :properties 

недвижимости класса

class Property < ApplicationRecord 

    acts_as_paranoid 

    has_many :property_owners has_many :owners, :through => 
:property_owners 

    belongs_to :company belongs_to :country 

Это компания

Class Company < ApplicationRecord  
    has_many :properties 
     has_many :owners 

И последний из пользователей

class User < ApplicationRecord 
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

    before_create :set_default_role, only: :create 

    belongs_to :country 
    belongs_to :company 
    belongs_to :user_role 

    accepts_nested_attributes_for :company 
+0

Если компания имеет много пользователей, дома и владельцы, эти три все должны иметь company_id поле. Итак, где проблема, я не понимаю –

+0

Да, у всех у них есть company_id, я хочу хранить company_id в Доме и Владельце, где он связан с Пользователем. Когда пользователь создает новый дом или новый владелец, я хочу добавить этот идентификатор (company_id) –

+0

. Я бы сказал, что его очень неясно, о чем вы спрашиваете, и вы просто просто сбиты с толку и не имеете четкой модели домена. Вы, скорее всего, ищете 'has_one through:' и 'has_many через:' ассоциации. Если вы действительно можете включить свои модели и немного о фактическом проблемном домене, который вы пытаетесь решить (это, например, приложение для недвижимости или то, что вы пытаетесь построить?), Тогда этот вопрос может быть подотчетен. Сейчас он, скорее всего, будет похоронен или закрыт. – max

ответ

0

Учитывая у вас есть свои ассоциации прямо в контроллере, когда создается пользователь, например, запись в дом:

def create 
    @property = current_user.company.properties.new(property_params) 
    .... 
end 

Где current_user можно заменить на переменную, содержащую имя текущего пользователя и property_params являются сильные параметры, отправленные контроллеру из вашей формы.

Аналогично для owner

+0

Я получаю undefined метод 'properties 'для nil: NilClass , current_user Я предполагаю, что он отправляется из проекта как значение по умолчанию, если я raw current_user.company_id в представлении, я вижу значение, которое хранится в модели пользователя –

+0

Есть ли компания для пользователя? –

+0

Что вы имеете в виду? –