我有一个购买模型的has_one 优惠券.
该购买模型包含以下代码:
def decrement_coupon
coupon = Coupon.find_by_code(coupon_code, :readonly => false)
return unless coupon.respond_to?(:uses)
coupon.uses = coupon.uses - 1
coupon.save
end
Run Code Online (Sandbox Code Playgroud)
但是前几天我收到了这个错误:
ActiveRecord::ReadOnlyRecord - ActiveRecord::ReadOnlyRecord:
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/persistence.rb:245:in `create_or_update'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/callbacks.rb:273:in `create_or_update'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activesupport-3.0.6/lib/active_support/callbacks.rb:419:in `_run_save_callbacks'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/callbacks.rb:273:in `create_or_update'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/persistence.rb:39:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/validations.rb:43:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/attribute_methods/dirty.rb:21:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:240:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:292:in `with_transaction_returning_status'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:207:in `transaction'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:290:in `with_transaction_returning_status'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:240:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:251:in `rollback_active_record_state!'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/transactions.rb:239:in `save'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/associations/association_proxy.rb:222:in `send'
/usr/local/rvm/gems/ree-1.8.7-2010.02@lyconic/gems/activerecord-3.0.6/lib/active_record/associations/association_proxy.rb:222:in `method_missing'
/var/www/88tactical_production/releases/20110823232510/app/models/purchase.rb:69:in `decrement_coupon'
Run Code Online (Sandbox Code Playgroud)
并:readonly => false不能保证一个非只读记录?将此功能移至优惠券模型会有所作为吗?(无论如何,我可能会这样做)
当然,必须有很多方法来优化以下代码,我必须确保很多文本框都不是空的,然后读取它们的值:
if (foo1.Text.Length != 0 & bar1.Text.Length != 0)
{
output.Text += myStrings[i] + " / " + foo1.Text + " / " + bar1.Text;
}
if (foo2.Text.Length != 0 & bar2.Text.Length != 0)
{
output.Text += myStrings[i] + " / " + foo2.Text + " / " + bar2.Text;
}
if (foo3.Text.Length != 0 & bar3.Text.Length != 0)
{
output.Text += myStrings[i] + " / " + foo3.Text + " / " + bar3.Text;
}
if (foo4.Text.Length != 0 …Run Code Online (Sandbox Code Playgroud) 我正在开发一个多站点CMS,它具有站点间交叉发布的概念.几种类型的内容(文章,事件,Bios等)可以与许多网站相关联,而网站可以包含许多内容.内容片段和站点之间的多对多关联还必须支持每个相关内容项的一些共同属性 - 站点起源的概念(这是内容出现的原始站点吗?)以及概念给定关联网站上给定内容的"主要"和"次要"内容状态.
我的想法是创建一个名为ContentAssociation的多态连接模型,但是我很难让多态关联按照我的预期行事,而且我想知道我是否会这样做是错的.
这是我对连接表和模型的设置:
create_table "content_associations", :force => true do |t|
t.string "associable_type"
t.integer "associable_id"
t.integer "site_id"
t.boolean "primary_eligible"
t.boolean "secondary_eligible"
t.boolean "originating_site"
t.datetime "created_at"
t.datetime "updated_at"
end
class ContentAssociation < ActiveRecord::Base
belongs_to :site
belongs_to :associable, :polymorphic => true
belongs_to :primary_site, :class_name => "Site", :foreign_key => "site_id"
belongs_to :secondary_site, :class_name => "Site", :foreign_key => "site_id"
belongs_to :originating_site, :class_name => "Site", :foreign_key => "site_id"
end
class Site < ActiveRecord::Base
has_many :content_associations, :dependent => :destroy
has_many :articles, :through => :content_associations, :source …Run Code Online (Sandbox Code Playgroud) activerecord ruby-on-rails polymorphic-associations ruby-on-rails-3
我使用rails 3.0.3
javascript自动完成需要这样的数据
{
query:'Li',
suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'],
data:['LR','LY','LI','LT']
}
Run Code Online (Sandbox Code Playgroud)
我的行动是
def autocomplete
@query = params[:query]
@customers = Customer.where('firstname like ?', "%#{@query}%")
render :partial => "customers/autocomplete.json"
end
Run Code Online (Sandbox Code Playgroud)
我的观点是
{
query:'<%= @query %>',
suggestions: <%= raw @customers.map{|c| "#{c.firstname} #{c.lastname}" } %>,
data: <%= raw @customers.to_json %>
}
Run Code Online (Sandbox Code Playgroud)
它返回
{
query:'e',
suggestions: ["customer 1", "customer 2"],
data: [1, 3]
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为建议/数据的数据应该在简单引用之间......
我不能使用to_json方法,因为它将返回我的对象的所有内容.
有什么建议吗?
干杯
假设我开始使用这个模型:
class Location < ActiveRecord::Base
attr_accessible :company_name, :location_name
end
Run Code Online (Sandbox Code Playgroud)
现在我想将其中一个值重构为关联模型.
class CreateCompanies < ActiveRecord::Migration
def self.up
create_table :companies do |t|
t.string :name, :null => false
t.timestamps
end
add_column :locations, :company_id, :integer, :null => false
end
def self.down
drop_table :companies
remove_column :locations, :company_id
end
end
class Location < ActiveRecord::Base
attr_accessible :location_name
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :locations
end
Run Code Online (Sandbox Code Playgroud)
这一切在开发过程中都很好,因为我一步一步都做得很好; 但如果我尝试将其部署到我的临时环境中,我就会遇到麻烦.
问题是,由于我的代码已经更改以反映迁移,因此在尝试运行迁移时会导致环境崩溃.
还有其他人处理过这个问题吗?我是否已经辞职将我的部署分成多个步骤?
更新似乎我错了; 在迁移同事的环境时,我们遇到了麻烦,但暂存更新没有问题.Mea Culpa.我会将@ noodl的回复标记为埋葬这个的答案,无论如何,他的帖子都是好建议.
我正在开发一个侧面项目,它将是一个简单的Web应用程序,用于维护类列表及其即将到来的日程安排.
我真的很想在这个项目中使用Linq to SQL,但不幸的是我正在开发的服务器环境只有MySql可用.我已经简单介绍了Subsonic,但它只是没有完成工作.
但是,这个应用程序的数据库要求并不是那么好,所以我很好奇在App_Data中使用MDF文件是否可行.否则,似乎我将不得不手动编写我想要不惜一切代价避免的SQL查询.
因此,接下来有一个按钮调用(页面)。其href链接为site / blah /#。所以我知道它真正运行的javascript代码。在我解析完第一页之后,我想解析下一页。如何模拟在那里的鼠标单击,以便继续加载和解析页面?
我正在使用C#.NET
我有一个客户列表
List<Customers> cust = new List<Customers>();
cust.Add(new Customers(){ID=1, Name="Sam", PurchaseDate=DateTime.Parse("01/12/2008")});
cust.Add(new Customers(){ID=2, Name="Lolly" PurchaseDate=DateTime.Parse("03/18/2008")});
Run Code Online (Sandbox Code Playgroud)
我想显示2个单独的结果,如:
客户在Yr中购买//按年份分组并显示ID,名称
按客户购买年份 - 月份//按年份分组然后按月份和显示ID,名称
如果我想订购年份怎么办?
更新:
再补充一点.如果我在Customer类中有一个名为"Status"的字段,其中任何一个值为'Y','N','C'代表yes,no和取消我将如何创建一个查询以给出%的比率
Y - 20%N - 30%C - 50%
我写的过渡中的Rails 2.3的应用程序SearchLogic到Rails的3.0阿雷尔和MetaWhere,我快到的操作,我不知道怎么写。
旧代码是:
if params[:city] && params[:city].respond_to?(:each)
users = users.person_address_city_like_any(params[:city])
end
Run Code Online (Sandbox Code Playgroud)
这样做是LIKE对 params[:city] 数组中的每个项目进行匹配。
当只有一个搜索词时,这在 MetaWhere 中很容易:
users = users.where(:person => { :address => { :city.matches => '%city1%' } })
Run Code Online (Sandbox Code Playgroud)
但是我将如何用任意数量的城市来写这个?
c# ×3
activerecord ×2
asp.net ×2
.net ×1
arel ×1
json ×1
linq ×1
meta-where ×1
migration ×1
mysql ×1
optimization ×1
readonly ×1
searchlogic ×1
sql ×1
sql-server ×1