在我的应用程序中,我有一个“用户”模型。每个用户可以有多个(电子邮件)地址,这些地址在模型“地址”中定义:
Class User < ActiveRecord::Base
has_many :addresses
def is_authorized(op)
# returns true or false
end
def is_owned_by(user)
# returns true or false
end
end
Class Address < ActiveRecord::Base
belongs_to :user
end
在 AddressController 类中,当前登录的用户在“@user”实例变量中可用。控制器阻止普通用户编辑、删除、查看等不属于他们的地址 - 但他确实允许管理用户编辑这些地址。AddressController 类可以询问 AddressModel 当前登录的用户是在执行普通操作还是超级用户操作。
这一切都很好,并且数据库更新按预期进行,但是,我真的希望根据操作模式有不同的 HTML 视图。我只能想到两种方法来实现这一点:
- 使 AddressController 类中的操作模式(正常/特权)已知(使用实例变量,例如@privileged)并在视图中使用“if”语句。
- 在地址控制器中使用类似“after_filter”的东西来呈现不同的布局。
如果可以在两个完全不同的布局中显示执行单个控制器的结果,这取决于它的操作模式,那么有什么好的方法来实现呢?
在此先感谢斯特凡