在我的应用程序中,我有一个“用户”模型。每个用户可以拥有多个(电子邮件)地址,这些地址在“地址”模型中定义:
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视图。我只能想到两种方法来实现这一点:
1.在AddressController类中使操作模式(normal/privileged)可知(使用实例变量,例如@privileged),并在视图中使用“if”语句。
2.在地址控制器中使用类似“after_filter”的东西来呈现不同的布局。
如果可以根据其操作模式在两个完全不同的布局中显示单个控制器的执行结果,那么实现这一点的好方法是什么?
谢谢Stefan提前