gpt4 book ai didi

ruby - 小马和续集协会冲突?

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:01 26 4
gpt4 key购买 nike

我在 Sinatra 应用程序中使用 Pony 和 Sequel 时遇到了问题。没有小马,一切都很好,但只需要打破小马续集的联想。这是我的博客模型:

class Post < Sequel::Model

one_to_many :comments, :order => :date.asc(), :conditions => {:approved => 1}

set_schema do
primary_key :id
varchar :title
varchar :text
varchar :category
varchar :status
datetime :date
varchar :link
end
end

class Comment < Sequel::Model
plugin :validation_helpers
many_to_one :posts
attr_accessor :ip, :user_agent, :referrer, :permalink

set_schema do
primary_key :id
integer :post_id
varchar :author
varchar :comment
DateTime :date
varchar :email
varchar :url
varchar :approved
end

然后我在路由中这样调用它们

post '/:link' do
@post = Post[:link=>params[:link]]
params[:comment].merge!( {
:ip => request.ip.to_s,
:user_agent => request.env['HTTP_USER_AGENT'].to_s,
:referrer => request.env['REFERER'].to_s,
:permalink => request.env['REFERER'].to_s
} )
begin
@comment = Comment.create params[:comment]
@post.add_comment @comment
rescue
@message = $!
end
@title = @post.title
haml :posts
end

我什至不必在某处调用小马,只是要求它 @post.add_comment @comment 失败。它说

NoMethodError - undefined method `_add_comments' for #<Post:0x102b09890>:
/Library/Ruby/Gems/1.8/gems/sequel-3.21.0/lib/sequel/model/associations.rb:1078:in `send'
/Library/Ruby/Gems/1.8/gems/sequel-3.21.0/lib/sequel/model/associations.rb:1078:in `add_associated_object'
/Library/Ruby/Gems/1.8/gems/sequel-3.21.0/lib/sequel/model/associations.rb:743:in `add_comment'

在我看来好像与 send 有冲突?我什至不知道如何开始调试它。

最佳答案

不管你信不信,这是由 ActiveSupport 问题引起的。您应该下拉到 ActiveSupport 3.0.3 或通过以下方式手动要求默认的 ActiveSupport 变形:

require 'active_support/inflections'

基本上,在 3.0.3 之后,ActiveSupport 可以加载没有默认变形的变形器,这会导致破坏单数化和复数化方法。我猜 pony 使用的邮件 gem 是已知会被此更改破坏的库之一。

Rails 开发人员显然不认为这是 ActiveSupport 中的错误,而是使用 ActiveSupport 的库中的错误。

关于ruby - 小马和续集协会冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com