比较Ruby-on-Rails模型

比较Ruby-on-Rails模型,ruby-on-rails,ruby,ruby-on-rails-3,model,Ruby On Rails,Ruby,Ruby On Rails 3,Model,我有一个大约60列的模型调用权限,其中一半列表示布尔值,另一半表示text:string字段 我想能够比较这个模型的两个不同对象 与另一个对象中的等效列相比,比较只能显示第一个对象的真实值。忘记包含或不包含文本的值 例如: 目标1: 目标2: 在我看来,我想展示这个比较,只显示对象1的真实列和对象2的等效字段 有什么建议吗 谢谢。如果我正确理解了您的问题,您希望能够找到与其他记录相关的对象记录。这并不难 obj = Object.find(some_id) conditions = Hash.n

我有一个大约60列的模型调用权限,其中一半列表示布尔值,另一半表示text:string字段

我想能够比较这个模型的两个不同对象

与另一个对象中的等效列相比,比较只能显示第一个对象的真实值。忘记包含或不包含文本的值

例如:

目标1:

目标2:

在我看来,我想展示这个比较,只显示对象1的真实列和对象2的等效字段

有什么建议吗


谢谢。

如果我正确理解了您的问题,您希望能够找到与其他记录相关的对象记录。这并不难

obj = Object.find(some_id)
conditions = Hash.new
obj.attributes.each do |key, value|
    if value == true
        conditions[key] = value
    end
end
interestingObjects = Object.where(conditions).all

然后你感兴趣的对象就会有你想要的记录

谢谢你,伙计。我认为这是正确的。。我之前的评论:我不关心对象1的错误属性。这是真的。此外,我不关心对象1中的属性是否与对象2中的属性相同。我只关心对象1的真实属性。返回2个对象。第一个对象将仅为对象1的真实属性。对象2将等同于对象1的真值,但最后我想返回2个对象。一个对象具有对象1的真值。另一个只有与对象2的真值相等的值。这就是它的作用。object_1_permissions现在具有object 1的真实属性,object_2_permissions现在具有相同属性的值。你在开玩笑吧:p object_1_permissions,object_2_permissions=object_1.compareobject_2这行有魔力吗?你能解释一下吗??因为我是Rails新手?这里的object_1和2是Permissions类的实例,我假设上面定义的Permissions类是ruby on Rails模型。这项工作是在Permissionscompare方法中完成的。是的,在ruby中,这是一件很聪明的事情。试试a,b,c=[1,2,3]-c现在等于3,a是1等等。
class Permissions < ActiveRecord::Base
  def compare(permission)
    true_attributes = self.attributes.select{|k, v| v==true }
    equivalent_attributes = permission.attributes.select{|k, v| true_attributes.key?(k) }

    [true_attributes, equivalent_attributes]
  end
end

object_1_permissions, object_2_permissions = object_1.compare(object_2)
obj = Object.find(some_id)
conditions = Hash.new
obj.attributes.each do |key, value|
    if value == true
        conditions[key] = value
    end
end
interestingObjects = Object.where(conditions).all
class Permissions < ActiveRecord::Base
  def compare(permission)
    true_attributes = self.attributes.select{|k, v| v==true }
    equivalent_attributes = permission.attributes.select{|k, v| true_attributes.key?(k) }

    [true_attributes, equivalent_attributes]
  end
end

object_1_permissions, object_2_permissions = object_1.compare(object_2)