Ruby on rails 如何从ActiveRecord模型中获取多个属性值和方法值?

Ruby on rails 如何从ActiveRecord模型中获取多个属性值和方法值?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,为了解决我的问题,我在下面设置了虚拟汽车模型: 车型有 3属性(id、车名、车主名)和 2返回整数(乘客、乘客)的方法 我想得到一个HASHONE,其中包含来自所有汽车的2属性和2方法的值。为了解决这个问题,我的临时解决方案如下: json_format = Car.all.to_json(only: [:car_name, :owner_name], methods: [:riders, :passengers]) final_hash = ActiveSupport::JSON.decode

为了解决我的问题,我在下面设置了虚拟汽车模型:

车型有
3属性(id、车名、车主名)和
2返回整数(乘客、乘客)的方法

我想得到一个HASHONE,其中包含来自所有汽车的2属性和2方法的值。为了解决这个问题,我的临时解决方案如下:

json_format = Car.all.to_json(only: [:car_name, :owner_name], methods: [:riders, :passengers])
final_hash = ActiveSupport::JSON.decode(json_format)
这是可行的,但这很糟糕,因为我只对其可选函数使用“to_json”方法。

他们还可以通过自己的可选函数直接从汽车模型中获取一个散列吗?

使用
as\u json
。这是
to_json
在引擎盖下使用的,它接受所有相同的选项,但返回一个
散列使用
作为_json
。这是
to_json
在引擎盖下使用的,它接受所有相同的选项,但返回一个
散列使用
作为_json
。这是
to_json
在引擎盖下使用的,它接受所有相同的选项,但返回一个
散列使用
作为_json
。这是
to_json
在引擎盖下使用的,它接受所有相同的选项,但返回一个
散列值

我和您一样认为,将json命令用于与json无关的方法是一种糟糕的做法

如果您不介意长篇大论,您可以这样做:

formatted_cars = Array.new
Car.all.each do |c|
  formatted_cars.push( car_name: c.car_name,
                       owner_name: c.owner_name,
                       riders: c.riders,
                       passengers: c.passengers )
end

我发现,当同时点击属性和方法时,只需像这样指定赋值就最干净了。这也是我将对象及其虚拟属性传递给javascript时使用的技术。

我和您一样认为,将json命令用于与json无关的方法是一种糟糕的做法

如果您不介意长篇大论,您可以这样做:

formatted_cars = Array.new
Car.all.each do |c|
  formatted_cars.push( car_name: c.car_name,
                       owner_name: c.owner_name,
                       riders: c.riders,
                       passengers: c.passengers )
end

我发现,当同时点击属性和方法时,只需像这样指定赋值就最干净了。这也是我将对象及其虚拟属性传递给javascript时使用的技术。

我和您一样认为,将json命令用于与json无关的方法是一种糟糕的做法

如果您不介意长篇大论,您可以这样做:

formatted_cars = Array.new
Car.all.each do |c|
  formatted_cars.push( car_name: c.car_name,
                       owner_name: c.owner_name,
                       riders: c.riders,
                       passengers: c.passengers )
end

我发现,当同时点击属性和方法时,只需像这样指定赋值就最干净了。这也是我将对象及其虚拟属性传递给javascript时使用的技术。

我和您一样认为,将json命令用于与json无关的方法是一种糟糕的做法

如果您不介意长篇大论,您可以这样做:

formatted_cars = Array.new
Car.all.each do |c|
  formatted_cars.push( car_name: c.car_name,
                       owner_name: c.owner_name,
                       riders: c.riders,
                       passengers: c.passengers )
end

我发现,当同时点击属性和方法时,只需像这样指定赋值就最干净了。这也是我将对象及其虚拟属性传递给javascript时使用的技术。

我同意将其转换为Json并返回是非常愚蠢的。我愿意这样做

Car.all.collect{|car| hash = {}; [:car_name, :owner_name, :riders, :passengers].each{|key| hash[key] = car.send(key)}; hash}
将其放入对象中的方法会更干净

#in Car class
def stats_hash
  hash = {}
  [:car_name, :owner_name, :riders, :passengers].each do |key|   
    hash[key] = self.send(key)
  end
  hash
end
那就做吧

Car.all.collect(&:stats_hash)

我同意将其转换为Json并返回是相当愚蠢的。我愿意这样做

Car.all.collect{|car| hash = {}; [:car_name, :owner_name, :riders, :passengers].each{|key| hash[key] = car.send(key)}; hash}
将其放入对象中的方法会更干净

#in Car class
def stats_hash
  hash = {}
  [:car_name, :owner_name, :riders, :passengers].each do |key|   
    hash[key] = self.send(key)
  end
  hash
end
那就做吧

Car.all.collect(&:stats_hash)

我同意将其转换为Json并返回是相当愚蠢的。我愿意这样做

Car.all.collect{|car| hash = {}; [:car_name, :owner_name, :riders, :passengers].each{|key| hash[key] = car.send(key)}; hash}
将其放入对象中的方法会更干净

#in Car class
def stats_hash
  hash = {}
  [:car_name, :owner_name, :riders, :passengers].each do |key|   
    hash[key] = self.send(key)
  end
  hash
end
那就做吧

Car.all.collect(&:stats_hash)

我同意将其转换为Json并返回是相当愚蠢的。我愿意这样做

Car.all.collect{|car| hash = {}; [:car_name, :owner_name, :riders, :passengers].each{|key| hash[key] = car.send(key)}; hash}
将其放入对象中的方法会更干净

#in Car class
def stats_hash
  hash = {}
  [:car_name, :owner_name, :riders, :passengers].each do |key|   
    hash[key] = self.send(key)
  end
  hash
end
那就做吧

Car.all.collect(&:stats_hash)