Я использую Rails 4. Я создаю API databse, где пользователи могут зарегистрироваться в Facebook Graph API. Если у пользователя нет профиля, тогда изображение_url равно null.Как написать if statement в Rails 4 as_json method?
После чтения ответов в формате SO, я подумал, что это правильный способ создания пользовательского json для моего ответа.
Я создал метод as_json для рендеринга ответа, когда пользователь создан только с параметрами, которые должны быть возвращены. Это метод, как я создаю ответ JSon:
def as_json(options={}){
id: self.id,
first_name: self.first_name,
last_name: self.last_name,
auth_token: self.auth_token,
image: {
thumb: "http://domain.com" + self.profile_image.thumb.url
}
}
end
Этот метод выше, дает мне ошибку: no implicit conversion of nil into String
.
Мне нужно предоставить абсолютный путь URL-адреса изображения, если изображение существует в моем db, но мне не нужно указывать этот параметр в ответ, если url изображения null в моей базе данных. Как написать инструкцию if внутри этого метода as_json? Я пробовал это, но он не работает.
def as_json(options={}){
id: self.id,
first_name: self.first_name,
last_name: self.last_name,
auth_token: self.auth_token,
if !self.profile_image.thumb.url == nil
image: {
thumb: "http://domain.com" + self.profile_image.thumb.url
}
end
}
end
С помощью Хорхе де-лос-Сантос, я сумел сделать это передать no implicit conversion of nil into String
ошибку с этим кодом:
def as_json(options={})
response = { id: self.id,
first_name: self.first_name,
last_name: self.last_name,
auth_token: self.auth_token }
if !self.profile_image.thumb.url == nil
image = "http://domain.com" + self.profile_image.thumb.url
response.merge(image: {thumb: image })
end
response
end
Но теперь все пользователи будут возвращены без параметров изображения даже когда у него есть URL-адрес изображения.
или bang it ..' response.merge! (....) ' –