小编Pla*_*Ton的帖子

表A上的外键 - > B,表B上的外键 - > A.如何完成?

我有两张桌子 - 'business'和'business_contacts'.

business_contact表与业务表具有多对一关系.此外,每个企业都有一个"主要联系人"字段 - 我假设这是与business_contacts表的一对多关系.

当然,问题是这会为数据插入创建一个catch-22.由于这两个字段都不能为空,因此在有相应的业务之前我无法插入business_contact,但在有相应的business_contact之前我无法插入业务.

如果有人能帮助我理解如何处理相互的一对多关系,我将非常感激.

(项目在MySQL中完成,如果它有任何区别)

mysql database schema

5
推荐指数
1
解决办法
98
查看次数

Rails:RESTful资源:值得使用还是不灵活/高估?

在过去的两个月里,我一直在搞乱铁轨,到目前为止一切进展顺利 - 但有一个方面我有点怀疑.

我一直听说RESTful rails资源的乐趣:即config/routes中的'resource:foo',以及控制器中的7个restful操作.

除了非常简单的事情(例如通过运行'生成脚手架'来完成99%的事情),我发现尝试将项目功能压缩到该方法中比仅仅逐个匹配配置/路由中的URL更方便每个动作都需要.

但我一直认为我错了,除了最极端的情况之外,RESTful资源才是最佳选择.

所以:

(a)任何人都可以对此提出意见吗?

(b)对于经验丰富的铁路人员,典型项目中您的路线的百分比是:资源和行动编码的百分比是多少?干杯...

rest ruby-on-rails rails-routing

5
推荐指数
1
解决办法
584
查看次数

在textareas中解析换行符而不允许所有html标签

我有一个textarea字段,用户可以在其中输入内容.当在页面上显示它们的条目时,rails会返回\n每个换行符,这对于页面上的html来说根本没有中断.

从我所收集,解决这个得到的标准方法是一个.gsub命令,替换\n<br />,然后.html_safe就结束,以确保<br />呈现.

问题是,我不想html_safe内容 - 仍然应该替换html,但<br />标签应该注入(非转义)内容.

建议表示赞赏.

escaping ruby-on-rails html-safe

5
推荐指数
2
解决办法
7680
查看次数

Rails:完全被delayed_job困扰.不接受任何论点

我正在尝试使用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: …

ruby-on-rails delayed-job

5
推荐指数
1
解决办法
6207
查看次数

Rails 3/delayed_job - 通缉:延迟邮件的基本示例

我一直试图找出如何使用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)

ruby-on-rails delayed-job

5
推荐指数
1
解决办法
6526
查看次数

用于性能基准测试的Rails gems /工具?

我正在寻找用于监视/测试rails性能的工具,而且我没有太多运气找到任何特别有效的东西.我已经阅读了rails的"性能"指南,但我使用的是RSpec而不是Rake:Test,所以我并不是特别热衷于使用rake:test框架.

那么,除了rake之外,人们在轨道中使用什么进行性能测试:测试基准测试?任何建议赞赏

benchmarking rspec ruby-on-rails

5
推荐指数
1
解决办法
1782
查看次数

导轨:黄瓜不清洁DB

我在黄瓜和数据库事务方面遇到了一些问题 - 具体来说,当我运行测试套件时,之后不会清理数据库事务.

我正在使用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:in checkout_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:in mon_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:in 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: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:in retrieve_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:in clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/base.rb:77:inclean block 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:in clean' /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)

ruby-on-rails cucumber spork

5
推荐指数
1
解决办法
2178
查看次数

Delayed_job:任何调用上的未定义方法错误

我有一个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)

ruby-on-rails actionmailer delayed-job

5
推荐指数
1
解决办法
2251
查看次数

Rails新手:如何添加路由到rails 3引擎?

我正在尝试编写我的第一个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 method resources'for ActionDispatch :: Routing :: RouteSet:Class(NoMethodError)

任何建议非常感谢.目前,宝石只不过是一个非常基本的轨道生成的"青蛙"脚手架

干杯, - JB

routing ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
4488
查看次数

Rails/Javascript:如何将rails变量注入(非常)简单的javascript中

我想在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方式,每次都不会命中服务器.

任何建议非常感谢

javascript ruby-on-rails coffeescript

4
推荐指数
1
解决办法
5240
查看次数