如何正确应用 has_many 关系与 Ruby 上 Rails 的订单 6
How to correctly apply a has_many relationship with an order by in Ruby on Rails 6
我正在 Rails6 中创建一个用户模型,以反映存在于单独项目中的模型。
has_many 关系导致了一些问题。
class User < ApplicationRecord
has_many :activation_histories, inverse_of: :user , => { order "created_at DESC"}
end
我以此为基础的项目使用 Rails 3.2 并且像这样成功地工作
class User < ApplicationRecord
has_many :activation_histories, inverse_of: :user, order: "created_at desc"
end
我从官方文档中看到使用 order by 的例子看起来是这样
class Author < ApplicationRecord
has_many :books, -> { order "date_confirmed DESC" }
end
当我 运行 如此时,我得到一个错误,它期望 '=>' 而不是 '->',但是当我使用 '=>' 时,我得到
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
我对 Rails 上的 Ruby 还比较陌生,我不确定我哪里出错了或如何进行。
删除 inverse_of 对我看到的错误没有影响。
任何关于如何正确使用它的建议都将不胜感激。
尝试改变
has_many :activation_histories, inverse_of: :user , -> { order "created_at DESC"}
到
has_many :activation_histories, -> { order "created_at DESC"} , inverse_of: :user
你的 scope
应该是你的第二个论点。
https://www.rubydoc.info/docs/rails/4.1.7/ActiveRecord%2FAssociations%2FClassMethods:has_many
我正在 Rails6 中创建一个用户模型,以反映存在于单独项目中的模型。 has_many 关系导致了一些问题。
class User < ApplicationRecord
has_many :activation_histories, inverse_of: :user , => { order "created_at DESC"}
end
我以此为基础的项目使用 Rails 3.2 并且像这样成功地工作
class User < ApplicationRecord
has_many :activation_histories, inverse_of: :user, order: "created_at desc"
end
我从官方文档中看到使用 order by 的例子看起来是这样
class Author < ApplicationRecord
has_many :books, -> { order "date_confirmed DESC" }
end
当我 运行 如此时,我得到一个错误,它期望 '=>' 而不是 '->',但是当我使用 '=>' 时,我得到
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
app/models/user.rb:6: syntax error, unexpected =>
app/models/user.rb:6: syntax error, unexpected '}', expecting `end'
我对 Rails 上的 Ruby 还比较陌生,我不确定我哪里出错了或如何进行。 删除 inverse_of 对我看到的错误没有影响。
任何关于如何正确使用它的建议都将不胜感激。
尝试改变
has_many :activation_histories, inverse_of: :user , -> { order "created_at DESC"}
到
has_many :activation_histories, -> { order "created_at DESC"} , inverse_of: :user
你的 scope
应该是你的第二个论点。
https://www.rubydoc.info/docs/rails/4.1.7/ActiveRecord%2FAssociations%2FClassMethods:has_many