2016-02-22 2 views
0

У меня есть три таблицы: RM, GenericUser, Properties.Как решить неопределенную ошибку локальных переменных или методов

RM поля: id, name

GenericUser поля: id, mobile, rm_id, name.

Properties поля id, image, rm_id, generic_user_id, property_name.

RM создает GenericUser, так что rm_id автоматически вводится в таблице GenericUser.

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

У меня есть отношение модели следующим образом.

class Rm < ActiveRecord::Base 
    acts_as :user 
    has_many :generic_users 
end 

class Property < ActiveRecord::Base 
    belongs_to :generic_user 
end 

class GenericUser < ActiveRecord::Base 
    belongs_to :rm 
    has_many :properties 
end 

Мои generic_users propertiescontroller:

def create 
    @property = Property.new(property_params) 
    @gu=GenericUser.select(:rm_id).where(:id=>current_user.specific.id) 
    @[email protected]_id 
    logger.info @gu.inspect 
    logger.info @property.rm_id.inspect 
    if @property.save 
     redirect_to :back, notice: 'Property was successfully created.' 
    else 
     render :new 
    end 
end 

Я получаю эту ошибку:

enter image description here

когда я инспектировать @gu IAM получать эту

#<ActiveRecord::Relation [#<GenericUser id: 1, mobile: "8776766777", address: "reewtrwt", created_at: "2016-02-18 07:41:06", updated_at: "2016-02-19 08:59:13", dob: "", rm_id: "4", category_id: "1",>]> Completed 500 Internal Server Error in 73ms (ActiveRecord: 1.9ms)

как я сохраню этот GenericUser rm_id (т.е.; rm_id: 4) в поле свойств таблицы rm_id?

ответ

1

Ваша ошибка в этих строках:

@gu = GenericUser.select(:rm_id).where(:id=>current_user.specific.id) 
@property.rm_id = @gu.rm_id 

Объяснение:

@gu был возвращен как Active Record Relations, так что вы не могли бы назвать @gu.rm_id

Решение - Попробуйте что-то вроде этого:

@gu = GenericUser.find(current_user.specific.id) 
@property.rm_id = @gu.rm_id 

@gu теперь GenericUser, так что вы можете назвать rm_id на нем

+0

спасибо, это сработало :) – SreRoR

0

Вы уже выбрали rm_id в @gu. Вам не нужно снова звонить.

Изменение этого

@[email protected]_id 

К этому

@property.rm_id = @gu 
+0

он вставляет в нуль – SreRoR

Смежные вопросы