小编Joh*_*ohn的帖子

多次运行rake db:seed而不创建重复记录?

我在种子文件中有一些代码,我想改变它,以便在我多次运行种子命令时不会创建重复的记录.有没有办法从我的种子文件中调整下面的代码,以便这可能?除非我弄错了,否则find_or_create_by方法似乎不起作用.

data_file = Rails.root.join('db/data/data.csv')

CSV.foreach(data_file) do |row|
  TownHealthRecord.create(
    city: row[0],
    state: row[1],
    country: row[2],
    zip_code: row[3],
    area_code: row[4]
    )
end
Run Code Online (Sandbox Code Playgroud)

ruby database postgresql ruby-on-rails seeding

7
推荐指数
1
解决办法
2766
查看次数

如何更改 Rails 中的列数据类型?

我想使用 Rails 更改数据库中多个列的数据类型。我已尝试以下代码,但收到错误“G::DuplicateColumn: ERROR: 关系“town_health_records”的列“geography”已存在”

我尝试创建一个新的迁移文件并运行 rake db:migrate ,如下所示:

class UpdateColumns < ActiveRecord::Migration
  def change
    change_table :town_health_records do |t|
     t.string :geography
     t.string :total_pop_year_2005
     t.string :age_0_19_year_2005
     t.string :age_65_up_year_2005
     t.string :per_capita_income_year_2000
     t.string :persons_below_200pct_poverty_yr_2000
     t.float :pct_all_persons_below_200pct_poverty_year_2000
     t.float :pct_adequacy_prenatal_care_kotelchuck
     t.float :pct_c_sections_2005_2008
     t.integer :num_infant_deaths_2005_2008
     t.float :infant_mortality_rate_2005_2008
     t.float :pct_low_birthweight_2005_2008
     t.float :pct_multiple_births_2005_2008
     t.float :pct_publicly_financed_prenatal_care_2005_2008
     t.float :pct_teen_births_2005_2008


      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我只需要将以下各列的数据类型更改为字符串:

:total_pop_year_2005
:age_0_19_year_2005
:age_65_up_year_2005
:per_capita_income_year_2000
:persons_below_200pct_poverty_yr_2000
Run Code Online (Sandbox Code Playgroud)

ruby migration postgresql schema ruby-on-rails

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

ActionMailer不会发送邮件?

我正在尝试在我的开发环境中设置一个简单的contact_us页面,用户可以使用我创建的表单发送查询.我有ActiveMailer和Contact模型/控制器/视图都设置但它似乎没有正常工作.有任何想法吗?我的日志似乎显示正在发送的邮件.

的ActionMailer

class ContactConfirmation < ActionMailer::Base
  default from: "from@example.com"

  def receipt(contact)
    @contact = contact

    mail to: 'myname@example.com',
      subject: contact.subject
  end
end
Run Code Online (Sandbox Code Playgroud)

收据

<%= @contact.first_name %> <%= @contact.last_name %>

Writes:

<%= @contact.description %>
Run Code Online (Sandbox Code Playgroud)

ContactsController

class ContactsController < ApplicationController

  def new
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(contact_params)
    if @contact.submit_contact_info
      redirect_to users_path, notice: 'Submission successful. Somebody will get back to you shortly.'
    else
      render :new
    end
  end

  protected

  def contact_params
    params.require(:contact).permit(:first_name, :last_name, :email, :subject, :description)
  end
end
Run Code Online (Sandbox Code Playgroud)

联系型号

class Contact …
Run Code Online (Sandbox Code Playgroud)

email ruby-on-rails actionmailer

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

依赖:: destroy - 这是如何工作的?

在一个例子中,所有者的关联是作为研究员:

class Owner < ActiveRecord::Base
  has_many :buildings, dependent: :destroy 
end
Run Code Online (Sandbox Code Playgroud)

关系的另一面:

class Building < ActiveRecord::Base
  belongs_to :owner
end
Run Code Online (Sandbox Code Playgroud)

如果我要删除所有者,它是否会破坏相关的建筑物?如果删除所有者,如何指定依赖关系以便所有者和主键不再与任何建筑物相关联?

dependencies database-design ruby-on-rails associations

3
推荐指数
1
解决办法
3394
查看次数

语法错误,意外')',期待keyword_then或';' 或'\n'

这个错误涉及什么?我无法弄清楚代码在哪里不正确?

用户Index.html.erb

<%= @events.all.each do |event| %>
  <%= if current_user.activities.include?(event.activity) %>
    <%= event.activity %>
    <%= event.description %>
    <%= event.start_time %>
    <%= event.end_time %>
    <%= event.num_attendees_requested %>
    <%= event.location_name %>
    <%= event.street_address %>
    <%= event.city %>
    <%= event.state %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

用户控制器

class UsersController < ApplicationController
  def index
    @users = User.all
    @activities = Activity.all
    @events = Event.all
  end

  def show
    @user = current_user
    @events = Event.all
    @activities = Activity.all
  end
Run Code Online (Sandbox Code Playgroud)

views ruby-on-rails controllers

2
推荐指数
1
解决办法
5660
查看次数

你怎么能找到一个单词的所有字谜?

我试图用Ruby获取一个单词的所有字谜但我的代码不起作用,我只得到字符串'ant'的三个结果.任何帮助将非常感激.

class Anagram
    attr_reader :word
  def initialize(word)
    @word = word.downcase
  end

  def anagram_maker
    @word_bank = []
    index = @word.length
    minus_one = index - 1

    while (index * minus_one) != 0
      anagram = @word.split('').shuffle.join
      @word_bank << anagram
      index -= 1
    end
    @word_bank = @word_bank.uniq
  end

  def display
    anagram_maker
    if @word_bank.count > 1
      @word_bank.each do |anagram|
        puts anagram
      end
    else
      puts "Not enough letters for an anagram"
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

不知道还有什么可以尝试.

ruby anagram

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