ruby on rails的一些小坑

2017-05-17  本文已影响93人  xiaohesong

坑一

写了一个页面的查询,用的是ransack.

#model/order.rb
class Order < ActiveRecord::Base
    has_one :score, as: :scoreable
end

#model/score.rb
class Score < ActiveRecord::Base
    belongs_to :scoreable, polymorphic: true
end

这个是一个多态关联.在controller中使用ransack查询的时候碰到了一些问题.

@q = Score.includes(:scoreable).result
@result = @q.result

这样页面会出错,r如下:

Cannot eagerly load the polymorphic association :scoreable

其实解决方案也很简单粗暴,在model做下处理.

#score.rb
class Score < ActiveRecord::Base
    belongs_to :scoreable, polymorphic: true
    belongs_to :order, foreign_key: "scoreable_id"
end

然后 includes(:order)就可以了.

<input name="q[scoreable_numero_cont]" />

这样也会报错,如下:

uninitialized constant Score::Scoreable

解决方法是可以用上面提到的.指定了foreign_key的belongs_to.

<input name="q[order_numero_cont]" />

当然也可以使用ransack提供的解决方案.
ransack链接

坑二

在写积分的平均分的时候,写了一个类方法去获取当前数据的平均分.(总分/条数).

#score.rb
 ...
 def self.average
  #do smt
 end

会报错,是参数错误,换了一个方法名字就好了,这个问题会等有时间了继续追踪.

后续会补充遇到的坑.

上一篇下一篇

猜你喜欢

热点阅读