标签: polymorphic-associations

Rails:渲染命名空间的多态部分

我有一个叫做多态的模型Update.通常,我可以updatable使用简单的方法呈现其关联模型:

<%= render @update.updatable %>
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我从命名空间控制器中调用此方法,那么Rails也会尝试命名视图路径,admin/reviews/review而不是搜索reviews/review.这导致如下错误:

Missing partial admin/reviews/review
Run Code Online (Sandbox Code Playgroud)

通常我可以硬编码变通方法,例如:

<%= render :partial => "/reviews/review", :locals => {:review => @update.updatable}
Run Code Online (Sandbox Code Playgroud)

如果关联不是多态的,那就没关系,但既然如此,如果updatable不是a ,我会得到错误Review.不幸的是,我有几十个可能的updatables,并通过case声明进行分支将很难维护.

我有没有想到更简单的方法?

namespaces ruby-on-rails view polymorphic-associations

1
推荐指数
1
解决办法
715
查看次数

链接到活动管理中的自定义多态关联操作

我正在与 Active Admin 合作。目前,我有一个索引页面,允许我查看用户标记的所有资源。鉴于存在各种类型的资源,我的 Flagg 类和各种资源表之间存在多态关系。

在我的索引页面中,在 Active Admin 上,我希望能够链接到属于特定资源类型的相应显示页面。

我已经让我所有的代码都能工作了,但我不喜欢我想出的解决方案。

我如何改进我当前的解决方案,这样我就不必写一个尴尬的条件?

楷模

class Flag < ActiveRecord::Base
  #create relationships with user and flag model
  belongs_to :flaggable, polymorphic: true
end

class MilitaryResource < ActiveRecord::Base
  has_many :flags, as: :flaggable, :dependent => :destroy  
end

class DistrictResource < ActiveRecord::Base
  has_many :flags, as: :flaggable, :dependent => :destroy  
end

class SchoolResource < ActiveRecord::Base
  has_many :flags, as: :flaggable, :dependent => :destroy  
end
Run Code Online (Sandbox Code Playgroud)

活动管理员

ActiveAdmin.register Flag do

  #parameters permitted to create military resources
  permit_params :id, :user_id, :flaggable_id, :flaggable_type, …
Run Code Online (Sandbox Code Playgroud)

ruby polymorphism ruby-on-rails polymorphic-associations activeadmin

1
推荐指数
1
解决办法
1032
查看次数

多态嵌套表单导致AssociationTypeMismatch

楷模:

class User < ActiveRecord::Base
  belongs_to :role, :polymorphic => true

class Admin < ActiveRecord::Base
  has_one :user, :as => :role

class Dealer < ActiveRecord::Base
  has_one :user, :as => :role

class Buyer < ActiveRecord::Base
  has_one :user, :as => :role
Run Code Online (Sandbox Code Playgroud)

经销商控制器:

  def new
    @dealer = Dealer.new
    respond_to do |format|
      format.html
      format.xml  { render :xml => @dealer }
    end
  end

  def create
    @dealer = Dealer.new(params[:dealer])
    respond_to do |format|
      if @dealer.save
        flash[:notice] = 'Dealer was successfully created.'
        format.html { redirect_to [:admin, @dealer] }
        format.xml  { …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails polymorphic-associations

0
推荐指数
1
解决办法
1379
查看次数

具有类型转换的多态复制构造函数

我需要复制构造一个对象,同时将它的类型更改为另一个类,它是同一个类层次结构的成员.我已经阅读过多态复制构造函数,并且(希望)理解它背后的想法.然而,我仍然不知道这种模式是否适用于我的情况,如果适用,如何实施它.我认为最好是在一个例子中展示我需要的东西.

有一Base类和两个子类,Child1Child2.我需要创建一个Child2基于类型的对象Child1,即.最重要的是,我需要复制的对象p_int指向从Child1Child2.我写了一个简单的程序来说明它:

#include <iostream>
using namespace std;

class Base {
public:
    Base() { p_int = new int; *p_int = 0; }
    ~Base() { delete p_int; }
    virtual Base* clone() const = 0;

    void setpInt(int val) { *p_int = val; }
    void setInt(int val) { a = val; }
    virtual void print() {
        cout << "Base: ";
        cout << (long)p_int << ":" << *p_int << …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism type-conversion polymorphic-associations

0
推荐指数
1
解决办法
1110
查看次数

评论belongs_to几个模型之一

我的情况是有几种不同的模型可以有评论.试图找出关系:

Post
  has_many :comments

Update
  has_many :comments

Comment
  belongs_to EITHER :post OR :update (but not both)????
Run Code Online (Sandbox Code Playgroud)

什么是建立评论关系的正确方法?我希望能够打电话Post.commentsUpdate.comments

ruby activerecord ruby-on-rails polymorphic-associations ruby-on-rails-3

0
推荐指数
1
解决办法
116
查看次数