Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails属于冲突?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails rails属于冲突?

Ruby on rails rails属于冲突?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,很抱歉,如果以前有过类似的问题,我不知道用什么术语来搜索 我有一个“vehicle_workshop”模型,它存储车辆和车间数据,有一个名为“type”的列来区分这两个,“workshop_no”列用作名称 现在我有了另一个模型“车间分布”,它使用了车辆和车间,我能够创建如下关系 belongs_to :vehicle_workshop belongs_to :vehicle_workshop, :foreign_key => "vehicle_id" 这允许我保存数据,没有任何问题,两

很抱歉,如果以前有过类似的问题,我不知道用什么术语来搜索

我有一个“vehicle_workshop”模型,它存储车辆和车间数据,有一个名为“type”的列来区分这两个,“workshop_no”列用作名称

现在我有了另一个模型“车间分布”,它使用了车辆和车间,我能够创建如下关系

belongs_to :vehicle_workshop
belongs_to :vehicle_workshop, :foreign_key => "vehicle_id"
这允许我保存数据,没有任何问题,两个外键字段分别是车间的“vehicle\u workshop\u id”和车辆的“vehicle\u id”

现在的问题是当我想要访问注册号时,即车辆和车间的“车间号”字段

我有两个属性存取器,“车辆号”、“车间号”

方法如下

def vehicle_no
    self.vehicle_workshop ? self.vehicle_workshop.workshop_no : nil
end

def workshop_no
    self.vehicle_workshop ? self.vehicle_workshop.workshop_no : nil
end
这两个函数返回相同的值,如何将适当的id值传递给这两个函数?说‘车辆识别号’和‘车辆车间识别号’

任何帮助都将不胜感激

class WorkshopDistribution
  # You could change your references to these:
  belongs_to :vehicle_workshop
  belongs_to :vehicle, :foreign_key => "vehicle_id", :class_name => 'VehicleWorkshop'

  # and then just change methods:
  def vehicle_no
    vehicle ? vehicle.workshop_no : nil
  end 

  def workshop_no
    vehicle_workshop ? vehicle_workshop.workshop_no : nil
  end
end

但是如果您有可能更改数据库结构,我建议您在这种情况下使用STI(单表继承)。

车辆和车间之间的唯一区别是类型,所有其他字段都是相同的。这并不能回答问题,但是你可以将你的方法重构为:
self.vehicle\u workshop.try(:workshop\u no)| nil
@mu太短了,不是我设计的,客户设计了表结构并给了代码。在rails中有没有这样做的方法?