0

フォーラムソフトウェアを作成しています。管理者と改造者が特定のトピックを閉じることができるようにしたいと思います。

コードは、関連情報のみを表示するようにサニタイズされます。

モデル

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation, :bio
  has_many :topics, dependent: :destroy
end

class Topic < ActiveRecord::Base
  belongs_to :user
  attr_accessible :name, :last_post_id, :content
end

ユーザーのスキーマ:admin列とmod列は、adminとmodを決定します。

create_table "users", :force => true do |t|
  t.string   "name"
  t.string   "email"
  t.datetime "created_at",                         :null => false
  t.datetime "updated_at",                         :null => false
  t.string   "password_digest"
  t.string   "remember_token"
  t.boolean  "admin",           :default => false
  t.text     "bio"
  t.boolean  "mod",             :default => false
end

トピックのスキーマ:閉じた列は、トピックの閉じたステータスを決定します。

create_table "topics", :force => true do |t|
  t.datetime "created_at",                      :null => false
  t.datetime "updated_at",                      :null => false
  t.integer  "forum_id"
  t.string   "name"
  t.integer  "last_post_id"
  t.integer  "views"
  t.integer  "user_id"
  t.boolean  "closed",       :default => false
  t.text     "content"
end

悪意のあるPUT要求に対して脆弱であるため、私はトピックモデルのユーザーに消極的ですattr_accessible :closed(私が間違っている場合は私を訂正してください)。

closedRailsアプリがを使用せずにTOPICの列の値にアクセスして変更できるようにして、modattr_accessibleと管理者だけが編集できるようにする方法はありますか?

4

1 に答える 1

1

私はグーグルで検索し、このアスキーキャストを見つけました。

基本的に、動的なattr_accessibleを探しています。

あなたが現在持っている場合

class Article < ActiveRecord::Base  
  attr_accessible :name, :content, :closed  
end  

次のように動的attr_accessibleを使用できます。

class Article < ActiveRecord::Base  
  attr_accessible :name, :content  
  private  
  def mass_assignment_authorizer  
    super + [:closed]  
  end  
end  

私はあなたが探しているものであることを願っています。完全な参照のために私があなたに与えたリンクを必ずチェックしてください。

于 2012-07-02T03:48:38.163 に答える