Я хотел бы иметь возможность делать динамические запросы с DataMapper для поиска в базе данных Sqlite для моего проекта Sinatra. Возможно ли это? До сих пор я придумал что-то вроде этого, пытаясь получить песни, которые поются от исполнителя, указанного в именованном параметре:
get '/artists/:name' do
@artist = Artist.get(params[:name])
@songs= Song.all(:artist_name => '#{artist.name}')
slim :show_artists
end
Это мои классы DataMapper:
configure:development do
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/3sbase.db")
DataMapper.auto_migrate!
end
class Song
include DataMapper::Resource
property :id, Serial
property :title, String
property :year, Integer
belongs_to :artist
end
class Artist
include DataMapper::Resource
#property :id, Serial
property :name, String, :key=>true
property :age, Integer
has n, :songs
end
DataMapper.finalize
а это мой .slim файл
/show_artists.slim
h1= @artist.name
p Age: #{@artist.age}
- if @songs.any?
ul#songs
[email protected] do |song|
p <a href="/songs/#{song.id}">#{song.title} </a>
- else
p There are no songs from this artist/band in the database.
Каждый раз, когда оператор if возвращает false, я получаю сообщение «В базе данных нет песен этого исполнителя/группы». сообщение, несмотря на то, что в моей базе данных есть песни в исполнении исполнителя, которого я ищу.