在rails方法名称中使用@符号

时间:2014-10-22 10:41:09

标签: ruby-on-rails method-names

我有什么方法可以在rails方法名称中使用'@'符号吗? e.g。

def @method_name

end

Rails似乎不喜欢它。

我想这样做是为了遵守一些外部约定(在rails之外)。

2 个答案:

答案 0 :(得分:1)

可以这样做:

define_method('@test') do
  'test'
end

然后必须使用以下方法调用此方法:

model.send('@test')

我不推荐它,因为它将是丑陋和复杂的,这违背了红宝石的哲学。但它可以做到。

有点像这个视频:https://www.youtube.com/watch?v=eVpVHGiELf8

答案 1 :(得分:0)

我最终使用的是:

在我的控制器中:

@job = Job.first
render :json @job.as_json( methods: :@id )

在Job.rb

define_method('@id') do
  return url_for( :controller => 'jobs', :action => 'create', :id => id )
end

现在当我渲染我的json时,我得到了:

"@id":"http://localhost:3000/jobs?id=1"

注意:@id是符合json-ld

的语法