【发布时间】:2013-02-12 19:33:08
【问题描述】:
我有一个这样的模型:
class Page < ActiveRecord::Base
attr_accessible :page_id, :name, :page_url, :username
end
它没有相关的控制器,但在另一个控制器中我正在执行此代码:
fgraph = Koala::Facebook::API.new(ftoken)
@pages = fgraph.fql_query("select XXX from pages where xxx")
@pages.each do |p|
newpage = Page.find_or_initialize_by_page_id("#{p["page_id"]}")
newpage.update_attributes(
name: p["name"],
username: p["username"],
page_url: p["page_url"]
)
end
最后一行用 facebook 数据更新了我的模型的数据。我认为不可能用 mass-assign 进行攻击,因为我已经获得了 action 方法中的信息,但我真的是使用 rails 的初学者,我想确认我的假设是否属实。
【问题讨论】:
-
如果该方法修改了列表中提到的属性以外的任何属性,rails 会抛出错误。如果没有,一切都会正常工作。它与控制器无关。您不能从代码库中的任何位置修改不可访问的属性。
-
这个方法正在修改Page类的所有属性。它们必须是可访问的,因为我需要在这个类中写一些来自 facebook 的信息。在代码中没有 PagesController 或 pages#update 方法,只有这个。
标签: ruby-on-rails facebook facebook-oauth rails-activerecord mass-assignment