我正在使用Rails的accepts_nested_attributes_for方法取得了巨大的成功,但是如果记录已经存在,我怎么能不创建新的记录呢?
举例来说:
假设我有三个模型,团队,会员和玩家,每个团队都有很多玩家通过会员资格,玩家可以属于很多团队.然后,团队模型可以接受玩家的嵌套属性,但这意味着通过组合团队+玩家形式提交的每个玩家将被创建为新的玩家记录.
如果我只想以这种方式创建一个新的播放器记录,如果还没有同名的播放器,我应该怎么做呢?如果是具有相同名称的玩家,没有新玩家记录应当建立,而是正确的玩家应该发现并用新的球队纪录有关.
我们正在运行带有Passenger独立+ nginx和ruby 1.9.2-p290的Rails 3.0.7应用程序,我们看到最奇怪的事情发生了:在将一些更新部署到邮件程序模板之后,有时来自应用程序的新邮件应用更新,有时使用旧模板.
我在网上找不到任何关于缓存的ActiomMailer模板的东西,而且运行rake tmp:cache:clear也没有解决这个问题,fwiw.
有没有人经历过这样的事情?这个问题有明确的解决方案吗?
谢谢,
雅各
我正在为我的Rails应用程序设置一个持续集成服务器(使用Integrity),我想建议:
亲切的问候,
雅各
Web应用程序的多阶段部署有哪些最佳实践和一般理论?
我对使用Git,Capistrano和Passenger部署Rails应用程序特别感兴趣,我发现帖子讨论了这个过程的细节:
我应该考虑每个阶段(测试,分期,生产)?这些阶段应该部署到不同的物理服务器吗?有关多阶段部署的任何提示或建议?我应该留意哪些障碍?
最好,
雅各
在为连接表添加属性时,如何在has_many:through关联中使用ActiveRecord的accepts_nested_attributes_for帮助程序?
例如,假设我有一个团队模型:
class Team < ActiveRecord::Base
role = Role.find_by_name('player')
has_many :players,
:through => :interactions,
:source => :user,
:conditions => ["interactions.role_id = ?", role.id] do
class_eval do
define_method("<<") do |r|
Interaction.send(:with_scope, :create => {:role_id => role.id}) { self.concat r }
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
团队已经players完成了interactions,因为用户可以占据多个角色(玩家,经理等).
如何在连接表中添加属性的同时使用accepts_nested_attributes_for?
如果我有现有的团队记录team和现有的用户记录user,我可以这样做:
team.players << user
team.players.size
=> 1
Run Code Online (Sandbox Code Playgroud)
但是如果我用嵌套播放器创建一个新团队:
team = Team.create(:name => "New York Lions",
:players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
Run Code Online (Sandbox Code Playgroud)
在最后一个示例中,创建了团队,用户和交互记录(团队确实让用户通过交互),但此处未设置interact.role_id属性.
我正在尝试使用 Mailchimp 的 OAuth 实现完成身份验证,并且我的访问令牌请求收到“invalid_grant”错误。
使用 ruby HTTParty gem,我将数据发布到 Mailchimp:
url = 'https://login.mailchimp.com/oauth2/token'
result = HTTParty.post(url,
body: {
grant_type: 'authorization_code',
client_id: ENV["MAILCHIMP_ID"],
client_secret: ENV["MAILCHIMP_SECRET"],
code: auth_hash.credentials.token,
redirect_uri: 'https://requestb.in/1jrbjmi1',
},
headers: {
'Accept': 'application/json'
})
Run Code Online (Sandbox Code Playgroud)
在哪里:
有没有人遇到过这种错误?知道如何修复它吗?
我在我的Rails应用程序中使用acts_as_taggable_on,我想了解合并两个标签的最佳方法的建议.
例如,如果我有食物记录列表,有些标记为"奶酪",有些标记为"牛奶",那么将这些标记组合成单个"乳制品"标签的最佳方法是什么.我应该只找到标有"奶酪"和/或"牛奶"的所有记录,用新的"乳制品"标签标记这些记录,并删除"奶酪"和"牛奶"标签和标签,或者是否有更好的方法做这个?
我查看了gem的文档和规范,我没有看到任何组合多个标签的专用方法.如果我按照上面提出的多步路线进行操作,如果其中一个步骤失败(如果某些记录因任何原因未被标记为"乳制品")和"奶酪"标签,我是否会冒着弄乱标签的风险?被"删除"?
我正在使用Paperclip来处理我的Rails应用程序的图像上传,当我使用系统存储时它工作得很好:多个缩略图大小(Paperclip用语中的"样式")保存到文件中,我可以通过传递它来访问它们中的任何一个样式名称为url方法.
但是,当我将应用程序设置为在S3上存储图像时(使用aws-s3 gem),我的S3存储桶中只存储了一个图像.对于它的价值,只存储列出的最后一种样式.所以,如果在我的模型中,我有:
has_attached_file :photo,
:styles => { :large => "1000x1000>",
:medium => "600x600>",
:thumb => "200x200>" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:bucket => AppConstants.bucket,
:path => "pictures/:id/:filename"
Run Code Online (Sandbox Code Playgroud)
只有"拇指"大小才会保存到S3.
有没有人遇到过类似的问题?我怎样才能解决这个问题?
activerecord ×2
git ×2
ruby ×2
actionmailer ×1
amazon-s3 ×1
caching ×1
capistrano ×1
deployment ×1
forms ×1
mailchimp ×1
oauth ×1
paperclip ×1
tagging ×1
templates ×1
testing ×1
upload ×1
validation ×1