1

私はゲームを作っており、Game モデルと User モデルを持っています。

Game モデルは次のようになります。

class Game < ActiveRecord::Base
  belongs_to :first_user, :class_name => 'User', :foreign_key =>'first_user_id'
  belongs_to :second_user, :class_name => 'User', :foreign_key =>'second_user_id'
  validates_presence_of :first_user, :second_user

  attr_accessible :created_at, :finished_datetime, :first_user_id, :second_user_id, :status, :winner_user_id
  ...

ここで、ゲームのコントローラーで Game.new を呼び出します。ロギングで確認したので、current_user と challenge_user で呼び出されていることは確かです。

Game.new(:first_user => current_user, :second_user => challenge_user) 

残念ながら、次のエラーが表示されます。

Can't mass-assign protected attributes: first_user, second_user

attr_accessor ではなく attr_accessible を使用したため、これを理解していないため、割り当て可能にする必要があります。Rails、私は別の方法で何をすべきですか?

4

1 に答える 1

1

.newたとえば、または属性として渡すものはすべて.update_attributes「一括割り当て」です。次のように、「手動で」割り当てる必要があります。

@game = current_user.games.new(params[:my_game_mass_assignment_attributes])
@game.second_user = # your second user

一度に 1 つの属性を割り当てることは「大量割り当て」ではなく、セキュリティ上の理由から機能します ( http://guides.rubyonrails.org/security.html#mass-assignmentを参照) 。

于 2012-06-20T05:57:07.727 に答える