Ruby
Rails

[備忘録] Rails 開発でよく使用する Tips 集

More than 3 years have passed since last update.


お断り

あくまで自分用の備忘録なので、あまり内容に期待しないでくださいね。

思いつきで順次追加していきます。


Tips 集


現在のファイルからの相対パスを絶対パスに変換する

require File.expand_path('../application', __FILE__)

require 目的なら reuqire_relative でも可能です。


参考


Controller から Helper のメソッドを利用する

Rails が提供する delegate メソッドを利用して、view_context にメソッドを委譲します。


class MagicalGirlsController < ApplicationController
delegate :fa_icon, to: :view_context

def some_action
fa_icon('female fw', text: 'Kyoko Sakura')
end
end


参考


文字列を加工する

僕は tableizeconstantize をよく使います。


'magical_girl'.camelize #=> "MagicalGirl"
'magical_girl'.dasherize #=> "magical-girl"
'MagicalGirl'.underscore #=> "magical_girl"

'magical_girls'.classify #=> "MagicalGirl"

'magical_girl'.constantize #=> MagicalGirl

'Madoka::magical_girl'.demodulize #=> "magical_girl"

'magical_girl'.humanize #=> "Magical girl"
'magical_girl_id'.humanize #=> "Magical girl"
'MagicalGirl'.tableize #=> "magical_girls"

'magical_girl'.pluralize #=> "magical_girls"
'magical_girls'.singularize #=> "magical_girl"


参考


Hash をキーワード引数に渡す

Rails というよりは Ruby の Tips ですね。

キーがシンボルの Hash オブジェクト を引数として渡せます。

キーが文字列だったり、型が Hash 以外 (Object::HashWithIndifferentAccess など) だったりした場合は

ArgumentError: missing keywords になります。

試しに Settingslogic の値をコンストラクタのキーワード引数に渡してみました。


config/application.yml

magica:

- name: Kyoko Sakura
color: red
- name: Sayaka Miki
color: blue
- name: Mami Tomoe
color: yellow


app/models/settings.rb

class Settings < Settingslogic

source "#{Rails.root}/config/application.yml"
namespace Rails.env
end


magical_girl.rb

class MagicalGirl

attr_reader :name, :color

def initialize(name:, color:)
@name = name
@color = color
end
end


Settings.magical_girls.map { |girl| MagicalGirl.new(girl.to_hash.symbolize_keys) }

# => [
# #<Magica @color="red", @name="Kyoko Sakura">,
# #<Magica @color="blue", @name="Sayaka Miki">,
# #<Magica @color="yellow", @name="Mami Tomoe">
# ]


参考