我有两个模型Content和ContentType。每个Content(类不是对象)都有其关联的ContentType,ContentType基本上包含一些可以使用在线表单设置的属性,然后可以在视图中使用这些属性来显示/隐藏一些内容对象属性。
创建新的Content对象后(例如:@c = Content.new)我可以使用以下方法检索关联的ContentType:
课程内容 def content_type @content_type || = ContentType.find_by_name(self.class.to_s) 结束 端
然后我可以使用@ c.content_type.xxx查询ContentType属性,但有没有办法直接访问ContentType属性,就像它们是@c属性而不使用method_missing选项一样。基本上不是做@ c.content_type.has_title?我想问@ c.has_title?有没有办法将ContentType属性克隆到@c?
提前感谢。
答案 0 :(得分:1)
您可以使用委托方法
has_one :user
delegate :name, :name=, :email, :email=, :to => :user
这至少要好一些,因为可以隐藏ContentType。
如果ContentType也可以为零,你也可以通过一个:allow_nil => true
选项来避免讨厌“Cant call nil.xxx”错误。