我有两张桌子 - 'business'和'business_contacts'.
business_contact表与业务表具有多对一关系.此外,每个企业都有一个"主要联系人"字段 - 我假设这是与business_contacts表的一对多关系.
当然,问题是这会为数据插入创建一个catch-22.由于这两个字段都不能为空,因此在有相应的业务之前我无法插入business_contact,但在有相应的business_contact之前我无法插入业务.
如果有人能帮助我理解如何处理相互的一对多关系,我将非常感激.
(项目在MySQL中完成,如果它有任何区别)
在过去的两个月里,我一直在搞乱铁轨,到目前为止一切进展顺利 - 但有一个方面我有点怀疑.
我一直听说RESTful rails资源的乐趣:即config/routes中的'resource:foo',以及控制器中的7个restful操作.
除了非常简单的事情(例如通过运行'生成脚手架'来完成99%的事情),我发现尝试将项目功能压缩到该方法中比仅仅逐个匹配配置/路由中的URL更方便每个动作都需要.
但我一直认为我错了,除了最极端的情况之外,RESTful资源才是最佳选择.
所以:
(a)任何人都可以对此提出意见吗?
(b)对于经验丰富的铁路人员,典型项目中您的路线的百分比是:资源和行动编码的百分比是多少?干杯...
我有一个textarea字段,用户可以在其中输入内容.当在页面上显示它们的条目时,rails会返回\n每个换行符,这对于页面上的html来说根本没有中断.
从我所收集,解决这个得到的标准方法是一个.gsub命令,替换\n用<br />,然后.html_safe就结束,以确保<br />呈现.
问题是,我不想html_safe内容 - 仍然应该替换html,但<br />标签应该注入(非转义)内容.
建议表示赞赏.
我正在尝试使用collectiveidea的delayed_job在Rails 3应用程序中发送邮件.如果我尝试定期发送邮件(.deliver)它工作正常,但一旦我切换到延迟工作,事情就会崩溃.
我在delayed_job mysql表中得到的标准错误是:
{undefined方法`name'代表nil:NilClass ...
其中'name'是邮件程序视图中的第一个参数(@ contact.name).如果我再次使用delayed_job,这可以正常工作.
如果我删除视图中对@contact的所有引用,我会得到
{发送消息所需的发件人(Return-Path,Sender或From)
简而言之,似乎根本不理解任何论据.
以下所有相关代码 - 如果有人对此有任何建议,将非常感谢
CONTROLLER
def sendmail
@contact = Contact.new(params[:contact])
if @contact.save
ContactMailer.delay.contact_mail(@contact)
flash[:notice] = 'Your message has been successfully sent'
redirect_to root_path
else
render :action => 'index'
end
end
Run Code Online (Sandbox Code Playgroud)
MAILER:
class ContactMailer < ActionMailer::Base
default :from => "my@email.address"
def contact_mail(contact)
@contact = contact
mail(:to => 'my@email.address', :subject => 'Contact Form Query', :from => 'my@email.address', :content_type => 'text/plain')
end
handle_asynchronously :contact_mail, :run_at => Proc.new { 2.seconds.from_now }
end
Run Code Online (Sandbox Code Playgroud)
MAILER VIEW: …
我一直试图找出如何使用rails 3使用delayed_job发送延迟邮件.我已经尝试了几乎所有可行的可能性组合 - 我可以让邮件在后台运行,我只是可以'让它延迟发送到未来的时间.数据库中的delayed_jobs表清除任务,日志显示"已发送",delayed_job任务处理器接收任务并说发送没有失败......但邮件是:
如果我试着将来发送.
如果有人能提供将来发送邮件的rails 3 delayed_job的简单例子,我真的很感激.我相信很多人这样做,所以我怀疑我错过了一些明显的东西.我在下面尝试过的一种(无数种)组合:
delayed_job:2.1.2 rails:3.0.3 actionmailer:3.0.3
控制器:
class TestmailerController < ApplicationController
def index
Testmailer.delay.test_mail
end
end
Run Code Online (Sandbox Code Playgroud)
梅勒:
class Testmailer < ActionMailer::Base
def test_mail
mail(:to => '(myemailaddress@removedforprivacy.com', :from => '(removedforprivacy)@gmail.com', :subject => 'Testing Delayed Job', :content_type => 'text/plain').deliver
end
handle_asynchronously :test_mail, :run_at => Proc.new { 2.minutes.from_now }
end
Run Code Online (Sandbox Code Playgroud)
config/environments/development.rb的相关邮件部分:
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = true
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
config.action_mailer.default_url_options = { …Run Code Online (Sandbox Code Playgroud) 我正在寻找用于监视/测试rails性能的工具,而且我没有太多运气找到任何特别有效的东西.我已经阅读了rails的"性能"指南,但我使用的是RSpec而不是Rake:Test,所以我并不是特别热衷于使用rake:test框架.
那么,除了rake之外,人们在轨道中使用什么进行性能测试:测试基准测试?任何建议赞赏
我在黄瓜和数据库事务方面遇到了一些问题 - 具体来说,当我运行测试套件时,之后不会清理数据库事务.
我正在使用spork,postgres运行rails 3.1.
最初feature/support/env.rb设置为使用database_cleaner,但在每次调用db时始终出现以下错误:
没有指定数据库.缺少参数:数据库.(ArgumentError)/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:22:in
postgresql_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:innew_connection'/ Users/john /.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:302:incheckout_new_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:254:inblock(2级)结账时'/ Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:loop' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:inin checkout'/ Users/john /. rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:inmon_synchronize' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:249:incheckout' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/ activerecord -3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:151:inconnection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:388:inretrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord- 3.1.0. rc4/lib/active_record/connection_adapters/abstract/connection_specification.rb:107:inretrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/active_record.rb:7:inconnection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/ active_record /反 action.rb:17:inclean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/base.rb:77:incleanblock in clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in'/Users/ john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in each'/ Users /john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:inclean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/database_cleaner.rb:9:in'之后'
我试过恢复常规交易,但没有快乐.我可以通过控制台(黄瓜环境)访问数据库并创建/删除/检索记录没有问题.下面添加了config/database.yml,features/support/env.rb,config/environments/cucumber.rb和rspec/spec_helper.rb文件.任何建议都非常感激 - 这个让我难过了一段时间:
CONFIG/database.yml的
default: &defaults
adapter: postgresql
username: rails_dev
password: foobar
development:
<<: *defaults
database: fcct_d
test: &test
<<: *defaults
database: fcct_t …Run Code Online (Sandbox Code Playgroud) 我有一个rails 3.0.5应用程序,与delayed_job 2.1.4工作正常.
我触摸应用程序已经有几周了,但我只是去调整它,发现delayed_job已经坏了.具体来说,对delayed_job的任何调用都会在延迟后返回方法上的"未定义方法"错误.(例如,StudentMailer.delay.student_mail('test')在"student_mail"上返回"未定义的方法")我无法弄清楚原因.一些东西:
用StudentMailer.student_mail('test')替换StudentMailer.delay.student_mail('test').deliver可以很好地传递邮件.
没有更改网站上的任何宝石版本,他们自开发以来一直处于锁定状态
RVM已卸载并重新安装
发生在所有邮件方法中
代码和错误如下:
MAILER:
class StudentMailer < ActionMailer::Base
def course_signup(email, password, course, enrolment)
@email = email
@password = password
@course = course
@enrolment = enrolment
@student = Student.where(:email => email).first
if (@student.user.first_name && @enrolment.student.user.last_name) then
@username = @student.first_name.gsub(/[^[:alnum:]]/, '').downcase + '.' + @student.last_name.gsub(/[^[:alnum:]]/, '').downcase
else
@username = "fcuser#{@student.id}"
end
mail(:to => email, :from => ENV['ACCOUNTS_EMAIL'], :subject => "You have been enrolled as a student for #{course}", :content_type => 'text/plain')
end
end
Run Code Online (Sandbox Code Playgroud)
MODEL(梅勒呼吁after_save)
after_create { …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写我的第一个rails 3 gem - 一切运行良好,除了路线 - 我似乎无法让它们正常工作.这可能是一个非常简单的错误 - 如上所述,这是我第一次使用引擎.宝石本身非常非常基本 - 只是一个脚手架
我的gem的配置/路由文件:
class ActionController::Routing::RouteSet
resources :frogs
end
Run Code Online (Sandbox Code Playgroud)
...当我尝试启动服务器时,出现以下错误:
/home/john/.rvm/gems/ruby-1.9.2-p0/gems/cancandevise-0.1.0/config/routes.rb:3:in
<class:RouteSet>': undefined methodresources'for ActionDispatch :: Routing :: RouteSet:Class(NoMethodError)
任何建议非常感谢.目前,宝石只不过是一个非常基本的轨道生成的"青蛙"脚手架
干杯, - JB
我想在rails中编写一个非常简单的javascript计算器,它将输入字段的数量乘以存储在rails变量中的数字(@ item.base_price)
所以,在javascript/coffeescript方面,它粗略地说:
# app/assets/javascript/items.js.coffee
$ ->
$('#item_quantity').change ->
quantity_val = $(this).val()
$('#total_amount').html(quantity_val * <%= I_WANT_@ITEM.BASE_PRICE_HERE %>)
Run Code Online (Sandbox Code Playgroud)
我知道如何通过每次change()调用的ajax调用来实现这一点,但我认为必须有一个优雅的,希望不显眼的rails方式,每次都不会命中服务器.
任何建议非常感谢
delayed-job ×3
actionmailer ×1
benchmarking ×1
coffeescript ×1
cucumber ×1
database ×1
escaping ×1
html-safe ×1
javascript ×1
mysql ×1
rest ×1
routing ×1
rspec ×1
schema ×1
spork ×1