почему я не могу создать с этим параметром в Rails 3? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть метод со следующей строкой:

26         User.create!(:email => "token@email.com", :linkedin_uid => linkedin_uid, :password => Devise.friendly_token[0,20]) 

Вот мой контроллер:

20   def create
 21     @user = User.new(params[:user])
 22     if @user.save
 23       flash[:notice] = "Successfully created user."
 24       redirect_to @user
 25     else
 26       render :action => 'new'
 27     end
 28   end

Даже из консоли rails, когда я пытаюсь создать его, передавая params: linkedin_uid, он все равно выходит ноль. (

Вот контекст для строки:

18   def self.find_for_linked_in_oauth(omniauth_hash, signed_in_resource=nil)
 19     debugger
 20     #omniauth_hash is a hash passed in from env["omniauth_hash"] by callback controller
 21     linkedin_uid = omniauth_hash['uid']
 22       debugger
 23       if user = User.find_by_linkedin_uid(linkedin_uid)
 24         user
 25       else # Create an user with a stub password. 
 26         User.create!(:email => "token@email.com", :linkedin_uid => linkedin_uid, :password => Devise.friendly_token[0,20]) 
 27       end
 28   end

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Я предполагаю, что это модель пользователя от Devise. Проблема здесь, вероятно, в том, что вы не сделали linkedin_uid массово назначаемым . Вам нужно будет сделать это в вашей User модели через

attr_accessible :linkedin_uid

Всякий раз, когда вы определяете поля с помощью attr_accessible, они становятся ЕДИНСТВЕННЫМИ полями, которые будут обновляться с помощью массового назначения функций.

0 голосов
/ 28 марта 2011

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

...